package com.battle.service.service.in;

import com.battle.pojo.param.trainingGroup.GetTrainingDataParam;
import com.battle.pojo.param.trainingGroup.GetTrainingGroupNumberListParam;
import com.battle.pojo.param.trainingGroup.GetTrainingNumberListParam;
import com.battle.pojo.param.trainingGroup.GetTrainingSoleNumberListParam;
import com.battle.pojo.vo.trainingGroup.GetTrainingDataVo;
import com.battle.pojo.vo.trainingGroup.GetTrainingGroupNumberVo;
import com.battle.pojo.vo.trainingGroup.GetTrainingNumberVo;
import com.battle.pojo.vo.trainingGroup.GetTrainingSoleNumberVo;
import nirvana.core.domains.vo.PageResult;
import com.battle.pojo.param.trainingProgram.*;
import com.battle.pojo.vo.trainingProgram.*;

import java.util.List;


/**
 * 【描 述】：训练项目服务
 * 【环 境】：J2SE
 * 【详 细】：
 */
public interface TrainingProgramService {

    /**
     * 创建训练项目
     *
     * @param param
     */
    void createTrainingProgram(CreateTrainingProgramParam param);

    /**
     * 修改训练项目
     *
     * @param param
     */
    void editTrainingProgram(EditTrainingProgramParam param);

    /**
     * 移除训练项目
     *
     * @param id
     */
    void removeTrainingProgram(Long id);

    /**
     * 启动/禁用训练项目
     *
     * @param id
     */
    void enabledTrainingProgram(Long id);

    /**
     * 获取训练项目详情
     *
     * @param id
     * @return
     */
    GetTrainingProgramVo getTrainingProgram(Long id);

    /**
     * 获取训练项目列表
     *
     * @param param
     * @return
     */
    PageResult<GetTrainingProgramListVo> getTrainingProgramList(GetTrainingProgramListParam param);


    /**
     * 获取训练项目下拉列表
     *
     * @param param
     * @return
     */
    List<GetTrainingProgramDownListVo> getTrainingProgramDownList(GetTrainingProgramDownListParam param);


    /**
     * 训练量排行榜
     * @param param
     * @return
     */
    List<GetTrainingNumberVo> getTrainingNumberList(GetTrainingNumberListParam param);

    /**
     * 项目训练量统计
     * @param param
     * @return
     */
    List<GetTrainingGroupNumberVo> getTrainingGroupNumberList(GetTrainingGroupNumberListParam param);

    /**
     * 人员训练量统计
     * @param param
     * @return
     */
    List<GetTrainingSoleNumberVo> getTrainingSoleNumberList(GetTrainingSoleNumberListParam param);

    /**
     * 训练量增长趋势
     * @param param
     * @return
     */
    GetTrainingDataVo getTrainingDataVo(GetTrainingDataParam param);

}